// LeetCode 面试 Problem Nr. 02.02: 返回倒数第 k 个节点

/*
实现一种算法，找出单向链表中倒数第 k 个节点。返回该节点的值。

注意：本题相对原题稍作改动

示例：
	输入： 1->2->3->4->5 和 k = 2
	输出： 4

说明：
	给定的 k 保证是有效的。

来源：力扣（LeetCode）
链接：https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci
著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
*/

package main

import "github.com/saint-yellow/think-leetcode/ds"

type ListNode = ds.SinglyLinkedNode[int]

func kthToLast(head *ListNode, k int) int {
	return method1(head, k)
}

func method1(head *ListNode, k int) int {
	p1, p2 := head, head

	for i := 0; i < k; i++ {
		p2 = p2.Next
	}

	for p2 != nil {
		p1, p2 = p1.Next, p2.Next
	}

	return p1.Val
}
